iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0

昨天我們對運算子有哪些種類有了印象,也介紹了算數運算子,今天我們要來繼續介紹同樣很常見的「賦值運算子」。

賦值運算子 (Assignment operators)

顧名思義,「賦值」運算子的功能就是把賦值運算子後面的值賦予到前面的運算元或變數,最簡單的例子就是我們剛學過的 =,我們可以假設一個情境:

今天家裡有一顆蘋果

let apple = 1; // 我們宣告了一個變數 apple,並將 1 這個值賦予到 apple 這個變數,所以 apple 目前的值就是 1

如果今天我們多買了兩顆蘋果回家,現在家裡總共有三顆蘋果,我們會怎麼表示呢:

let apple = 1;
apple = 3; // 直接賦予 apple 一個 3 的值

這是一種方式,用console.log(apple)去查也會得到 3 的值,但這種方式並不能表達出:「原本蘋果只有一顆,後來加了兩顆後,總共變成三顆」這個過程。

如果我們想用程式碼表達出這個過程,可以怎麼做呢:

let apple = 1;
apple = apple + 2; // 用原本的變數 apple 取出原本的值也就是 1 後加上 2 後再重新賦予值到變數 apple
console.log(apple); // 得到 3 的值

這樣不僅可以得到正確的值,也可以更詳細地記錄中間的過程,才不會往後回來看時不知道為什麼原本蘋果是一顆,後來又變三顆。

但每次要加上新的值都要再多寫一次變數,有沒有更快的寫法呢?
有的,JavaScript有提供更快的寫法:

let apple = 1;
apple += 2; // 也會得到 3

上下兩段程式碼是一樣的意思,只是下面更為簡便,所以如果今天媽媽回家時又帶了五顆蘋果回來,我們可以用同樣的寫法表示:

let apple = 1;
apple += 2; // 3
apple += 5; // 8
// 上面 apple 的值為 3,再加上 5 後得到 8

當然也可以減少,這時就會用 -= 這個減法賦值運算子,例如哥哥吃掉了 2 顆蘋果:

let apple = 1;
apple += 2; // 3
apple += 5; // 8
apple -= 2; // 6
// 原本 apple 的值為 8,減掉 2 後得到 6

這樣的寫法可以明確又快速地表達出中間計算的過程或邏輯上,除了加號跟減號外,也有以下各種的運算子可以運用:

運算子 範例 等同
+= 加法 a += b a = a + b
-= 減法 a -= b a = a - b
*= 乘法 a *= b a = a * b
/= 除法 a /= b a = a / b
%= 餘數 a %= b a = a % b
**= 指數 a **= b a = a ** b
<<= 左移 a <<= b a = a << b
>>= 右移 a >>= b a = a >> b
>>>= 無號右移 a >>>= b a = a >>> b
&= 位元 AND a &= b a = a & b
^= 位元 XOR a ^= b a = a ^ b
|= 位元 OR a |= b a = a | b

上面可以看到除了基本的四則運算加減乘除外,較常見的就是餘數跟指數。下面六個是「位元運算子」的表示方式,先知道有這些東西就好,我們這邊先不討論。

明天將會回到資料型別一起來看除了之前介紹的「數字型別」外還有哪些型別,之後再繼續介紹另外兩個運算子「比較運算子」跟「邏輯運算子」,明天見囉!


參考資料

線上課程
MDN1
MDN2


上一篇
Day09 數字型別 與 算術運算子
下一篇
Day11 字串型別(1):宣告、字串相加、自動轉型
系列文
從基礎開始,用 JavaScript 從頭建立起程式肌肉 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言